When frames of audio and video are streamed across computer networks, the networks are often unable to perform at desired data rates. In one example, the streaming performance is impacted due to network devices in the communications channel between clients that request the streams and servers that provide the streams. Routers can introduce delays due to buffer overflows in the routers as traffic increases, especially for burst prone networks such as Internet Protocol (IP) networks. Links between devices can also have data rate limitations.
More often, however, the streaming performance is impacted due to inherent limitations of current application layer network protocols utilized to request and transmit data packets of the streams that include the frame data of the streams. Current application layer protocols for streaming video are typically of two types, known as pull and push. With pull protocols, clients such as applications running on user devices send request messages for individual frames from a streaming server. The server provides the frames in response to each request. Push protocols, in contrast, are associated with the server sending multiple frames of the streams whenever the frames become available on the server, i.e. in an unsolicited fashion. Because of their different nature, pull and push protocols have different advantages and disadvantages.
An advantage of pull protocols is that the client applications can calculate the bandwidth utilization of the communications channel, based on how long it takes for data packets of the streams to arrive after being requested. A significant disadvantage of pull protocols, however, is the additional message traffic and message overhead due to the solicited and iterative request/response nature of the pull protocols. This can impact the frame rate, in frames per second, of the frames of the audio and video streams sent from the client applications to the server over the communications channel. Client applications that run in a web browser, for example, typically use pull protocols for obtaining audio and video streams from a streaming server.
The major advantage of push protocols is their ability to sustain higher frame rates due to the significantly lower amount of message traffic and overhead as compared to pull protocols. Unlike pull protocols, however, client applications receiving streams via push protocols cannot calculate the bandwidth utilization of the communications channel over which the streams are transmitted/pushed.